package com.zlp.stack;


/**
 * 常量池中的字符串仅仅是符号，第一次使用到时才会变成对象
 * 利用串池的机制可以避免重复创建字符串对象
 * 字符串变量的拼接原理是StringBuilder(1.8)
 * 字符串常量的拼接原理是编译器优化
 * 可以使用intern()方法主动将串池中还没有的字符串对象放入串池
 *
 */
public class StringTableDemo_1 {
    /**
     * 演示StringTable 垃圾回收
     * -Xmx10m -XX:+PrintStringTableStatistics -XX:+PrintGCDetails -verbose:gc
     * @param args
     */
    public static void main(String[] args) {
        int i = 0;
        try {

            for (;i<10000;i++){
                String.valueOf(i).intern();
            }
        }catch (Throwable t){
            t.printStackTrace();
        }finally {
            System.out.println(i);
        }
    }
}
